//
//  NSDate+Extension.swift
//  03微博日期的处理
//
//  Created by Bingo on 15/11/11.
//  Copyright © 2015年 Bingo. All rights reserved.
//

import Foundation

extension NSDate{

    
    /**
     根据新浪返回的日期格式转换成系统的NSDate
     - parameter string: 新浪返回的日期
     - returns: NSDate
     */
    class func sinaStringToDate(string:String) -> NSDate{
        
        let df = NSDateFormatter()
        
        //在真机上需要指定区域
        df.locale = NSLocale(localeIdentifier: "cn")
//        "Tue Nov 09 10:39:18 +0800 2015"
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        
        let date = df.dateFromString(string)
        
        return date ?? NSDate()
    }
    
    
    func sinaDateDescription() -> String{
    
        let calendar = NSCalendar.currentCalendar()
           // 判断是否是今天
        if calendar.isDateInToday(self){
        
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            
            print("dalta\(delta)")
            
            if delta < 60{
            
                return "刚刚"
            }else if delta < 60 * 60{
            
                return "\(delta / 60)分钟"
            }else{
                return "\(delta / 60 / 60)小时前"
            }
        }
        
        var fmt = ""
        
        if calendar.isDateInYesterday(self){
        
            fmt = "昨天 HH:mm"
        }else{
        
            // 判断是一年内,还是更早期
            // 比较时间
            // date1: 比较的时间1
            // toDate: 比较的时间2
            // toUnitGranularity: 比较的单位
            let result = calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year)
            
            if result == NSComparisonResult.OrderedSame{
            
                fmt = "MM-dd HH:mm"
            }else{
            
                fmt = "yyyy-MM-dd HH:mm"
            }
        }
        
        let df = NSDateFormatter()
        
        df.dateFormat = fmt
        
        df.locale = NSLocale(localeIdentifier: "cn")
        // 将系统时间转成指定格式的字符串
        let dateString = df.stringFromDate(self)
        
        return dateString
    }
    
}